/*
 * @Author: DaHuaZhuXi
 * @Date: 2020-11-16 09:57:42
 * @LastEditTime: 2020-12-03 19:39:03
 * @LastEditors: DaHuaZhuXi
 * @Description:
 */

import {
  callService,
  beginWait,
  endWait,
  promptError,
  objToUrlParam,
} from '@/code/service';

export function $getArticleList(context: Vue, paramOjb: object) {
  if (paramOjb) {
    // 仅仅是为了解决eslint提示paramObj没有使用
  }

  return new Promise<object[]>((resolve) => {
    setTimeout(() => {
      const num = Math.round(Math.random() * 10 + 1);
      if (num >= 5) {
        const result: Array<object> = [
          {
            id: 0,
            title: '不可思议，纯 css 都能图片滚动',
            author: '张三',
            date: '2020年10月20日',
          },
          {
            id: 1,
            title: '还在百度Docker命令？推荐一套我用起来特顺手的命令！',
            author: '张三',
            date: '2020年10月20日',
          },
          {
            id: 2,
            title: '不可思议，纯 css 都能图片滚动',
            author: '张三',
            date: '2020年10月20日',
          },
          {
            id: 3,
            title: '不可思议，纯 css 都能图片滚动',
            author: '张三',
            date: '2020年10月20日',
          },
          {
            id: 4,
            title: '不可思议，纯 css 都能图片滚动',
            author: '张三',
            date: '2020年10月20日',
          },
        ];
        resolve(result);
      } else {
        promptError(context, `num=${num},加载失败`);
      }
    }, 100);
  });
}

/**
 * 设备管理 获取设备类型
 * @param {object} context 组件上下文
 * @param {object} paramObj 参数对象
 * @param {object} success 成功回调函数
 */
export function getArticleList(context: Vue, paramObj: object) {
  beginWait(context);
  return new Promise<object[]>((resolve) => {
    callService({
      method: 'get',
      url: `products?${objToUrlParam(paramObj)}`,
      data: null,
      success: (data: object[]) => {
        endWait();
        resolve(data);
      },
      exception: (data: string) => {
        endWait();
        promptError(context, data);
      },
    });
  });
}

/**
 * 设备管理 获取设备类型
 * @param {object} context 组件上下文
 * @param {object} paramObj 参数对象
 * @param {object} success 成功回调函数
 */
export function addArticle(context: Vue, paramObj: object, success: Function) {
  beginWait(context);

  callService({
    method: 'get',
    url: 'article/add',
    data: paramObj,
    success: (data: string) => {
      endWait();
      success(data);
    },
    exception: (data: string) => {
      endWait();
      promptError(context, data);
    },
  });
}
